package com.cardbaobao.cardbabyclient.utils;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Paint;
import android.text.TextPaint;
import android.util.TypedValue;
import android.widget.TextView;

/**
 * 尺寸转换工具
 */
public class DensityUtil {

    // 将dp转为px
    public static int dp2px(Context context, float dpValue) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue,
                context.getResources().getDisplayMetrics());
    }

    /**
     * 将px转dp
     *
     * @param context
     * @param pxValue
     * @return
     */
    public static int px2dp(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 将sp转为px值，保证文字大小不变
     *
     * @param spValue
     * @param context
     * @return
     */
    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

    /**
     * 计算出该TextView中文字的长度(像素)
     * @param textView
     * @param text
     * @return
     */
    public static float getTextWidth(TextView textView, String text) {
        TextPaint paint = textView.getPaint();
        // 得到使用该paint写上text的时候,像素为多少
        float textLength = paint.measureText(text);
        return textLength;
    }

    /**
     * 获取文本高度
     *
     * @param textView
     * @param text
     * @return
     */
    public static int getTextHeight(TextView textView, String text) {
        TextPaint paint = textView.getPaint();
        Paint.FontMetrics fr = paint.getFontMetrics();
        return (int) Math.ceil(fr.descent - fr.top) + 2;  //ceil() 函数向上舍入为最接近的整数。

    }

    /**
     * 获取文本宽度
     *
     * @param mTxtPaint
     * @param text
     * @return
     */
    public static int getTextWidth(Paint mTxtPaint, String text) {
        return (int) mTxtPaint.measureText(text);
    }

    /**
     * 获取文本高度
     *
     * @param mTxtPaint
     * @param str
     * @return
     */
    public static int getTextHeight(Paint mTxtPaint, String str) {
        Paint.FontMetrics fr = mTxtPaint.getFontMetrics();
        return (int) Math.ceil(fr.descent - fr.top) + 2;  //ceil() 函数向上舍入为最接近的整数。

    }


    public static int dp2px(float dp){
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
                Resources.getSystem().getDisplayMetrics());
    }
}
